package com.dq.service.subscribe;

import com.dq.controller.in.*;
import com.dq.domain.org.OrgTimeQuantum;
import com.dq.exception.customException.AdminException;
import com.dq.controller.in.request.SubscribeAdd;
import com.dq.vo.Vo;
import com.dq.domain.subscribe.Subscribe;
import com.dq.domain.message.oneself.SubscribeMessage;
import com.dq.domain.sys.user.user.base.SysUser;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Author luchangtong
 * @Date 2019/12/2 15:44
 */
public interface SubscribeService {
    void subscribe(SubscribeAdd subscribeAdd) throws AdminException;

    void subscribeMessage(Subscribe subscribe, SysUser sysUser, SubscribeMessage.UserType userType, String content) throws AdminException;

    void cancelSubscribe(Subscribe subscribe, String content) throws AdminException;

    public List<Subscribe> subscribeList(StaffSubscribeQuery staffSubscribeQuery) throws AdminException;
    public Long subscribeCount(StaffSubscribeQuery staffSubscribeQuery) throws AdminException;
    Vo list(StaffSubscribeQuery staffSubscribeQuery) throws AdminException;

    Vo findTimeByOrgAndProject(TimeQuery timeQuery)throws AdminException;

    Vo paySubscribe(SubscribePayRequest request) throws AdminException;

    public Vo changeSubscribeStatus(Long id,Subscribe.SubscribeStatus status,String str) throws AdminException;

    public BigDecimal countSubscribe(StaffSubscribeQuery countSubscribeQuery) throws AdminException;

}
